package com.fileupload.model.entity;

/**
 * 上传状态枚举
 * 定义文件上传的各种状态，避免硬编码数字
 */
public enum UploadStatus {
    /**
     * 上传失败
     */
    FAILURE(0, "上传失败"),
    
    /**
     * 上传成功
     */
    SUCCESS(1, "上传成功");
    
    private final Integer code;
    private final String description;
    
    /**
     * 构造函数
     * @param code 状态码
     * @param description 状态描述
     */
    UploadStatus(Integer code, String description) {
        this.code = code;
        this.description = description;
    }
    
    /**
     * 获取状态码
     * @return 状态码
     */
    public Integer getCode() {
        return code;
    }
    
    /**
     * 获取状态描述
     * @return 状态描述
     */
    public String getDescription() {
        return description;
    }
    
    /**
     * 根据状态码获取对应的枚举实例
     * @param code 状态码
     * @return 对应的枚举实例，如果没有匹配的则返回null
     */
    public static UploadStatus fromCode(Integer code) {
        if (code == null) {
            return null;
        }
        
        for (UploadStatus status : UploadStatus.values()) {
            if (status.code.equals(code)) {
                return status;
            }
        }
        return null;
    }
}